package org.ala.tiktools.sharddb.mybatis.router;

import java.util.Collections;
import java.util.Map;

/**
 * 分片路由器
 * <p>  如果参数搜数组或Collect类型，会逐个进行迭代
 *
 * @author ala
 * @date 2025-02-19 11:14
 */
public interface IShardRouter<E> {
    /**
     *  空值
     */
    public static IShardRouter NULL = new IShardRouter(){
        public Map route(Object o) {
            return Collections.emptyMap();
        }
    };


    /**
     *  分库路由
     *  <p> 需自行切分参数e
     *  <p> 返回null或者empty会处理成默认数据源
     */
    Map<ShardInfo, E> route(E e);
}
